
package com.xbongbong.admin.model;

import com.xbongbong.admin.domain.entity.RaidersCorpEntity;
import com.xbongbong.admin.domain.entity.ext.RaidersCorpEntityExt;
import com.xbongbong.paas.toolbox.wrap.IModel;

import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Set;


/**
* @author autoGen
* @time 2019-09-18 13:56:16
*/
public interface RaidersCorpModel  extends IModel<RaidersCorpEntity> {

	Integer save(RaidersCorpEntity entity);

	void insertBatch(List<RaidersCorpEntity> entityList);

	Integer deleteByKey(Long key, String corpid);

	RaidersCorpEntity getByKey(Long key, String corpid);

	/**
	 * 通过攻略id获取攻略公司关系实体
	 * @param raidersId 攻略id
	 * @param corpid 公司id
	 * @return com.xbongbong.admin.domain.entity.RaidersCorpEntity
	 * @author zcp
	 * @date 19/9/29 029 14:26
	 * @update 19/9/29 029 14:26
	 * @since v1.0
	 * @version v1.0
	 */
	RaidersCorpEntity getByRaidersId(Long raidersId, String corpid);

	@Override
	List<RaidersCorpEntity> findEntitys(Map<String, Object> param);

	@Override
	Integer getEntitysCount(Map<String, Object> param);

	/**
	 * 按照攻略id分组，计算每个攻略的公司数（对公司id排重）
	 * @param param 筛选条件、排序信息等都塞入该map内
	 * @return java.util.List<com.xbongbong.admin.domain.entity.ext.RaidersCorpEntityExt>
	 * @author zcp
	 * @date 19/9/25 025 21:32
	 * @update 19/9/25 025 21:32
	 * @since v1.0
	 * @version v1.0
	 */
	List<RaidersCorpEntityExt> getCorpCount(Map<String, Object> param);

	/**
	 * 按照攻略id分组，计算每个攻略已经解锁的公司数
	 * @param raidersIdIn 攻略id数组
	 * @return java.util.List<com.xbongbong.admin.domain.entity.ext.RaidersCorpEntityExt>
	 * @author zcp
	 * @date 19/9/25 025 21:32
	 * @update 19/9/25 025 21:32
	 * @since v1.0
	 * @version v1.0
	 */
	List<RaidersCorpEntityExt> getUnLockCorpCount(Collection<Long> raidersIdIn);

	/**
	 * 获取攻略公司关系list
	 * @param corpid 公司id
	 * @param raidersIdIn 攻略id数组
	 * @param sortFlag true 按照推荐顺序排序 false 无需排序
	 * @return java.util.List<com.xbongbong.admin.domain.entity.RaidersCorpEntity>
	 * @author zcp
	 * @date 19/9/24 024 20:52
	 * @update 19/9/24 024 20:52
	 * @since v1.0
	 * @version v1.0
	 */
	List<RaidersCorpEntity> getRaidersCorpList(String corpid, Set<Long> raidersIdIn, boolean sortFlag);

	/**
	 * 获取攻略公司关系list，并构建攻略id和攻略公司关系实体的对应关系map
	 * @param list 攻略list
	 * @param sortFlag true 需要按照顺序，即需要返回LinkedHashMap；false 不排序
	 * @return java.util.Map<java.lang.Long,com.xbongbong.admin.domain.entity.RaidersCorpEntity>
	 * @author zcp
	 * @date 19/9/24 024 20:52
	 * @update 19/9/24 024 20:52
	 * @since v1.0
	 * @version v1.0
	 */
	Map<Long, RaidersCorpEntity> corpRaidersMap(List<RaidersCorpEntity> list, boolean sortFlag);

	/**
	 * 获取总分和
	 *
	 * @param param 参数
	 * @return java.lang.Integer
	 * @author 徐俊杰
	 * @date 2019/9/26 9:44
	 * @since v1.0
	 */
	Integer getTotalScoreSum(Map<String, Object> param);

	/**
	 * 获取使用攻略的公司数
	 *
	 * @param param 参数
	 * @return java.lang.Integer
	 * @author 徐俊杰
	 * @date 2019/9/27 14:10
	 * @since v1.0
	 */
	Integer getRaidersCorpCount(Map<String, Object> param);

	/**
	 * 批量更新
	 *
	 * @param list 公司攻略列表
	 * @author 徐俊杰
	 * @date 2019/9/24 10:56
	 * @since v1.0
	 */
	void updateBatch(List<RaidersCorpEntity> list);
}

